#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//include fuer db.c
#include <my_global.h>
#include <mysql.h>
//include fuer login.c
#include <string.h>
#include <conio.h>
#include <ctype.h>


#define iSIZE 6  /*Brettgr\224\341e */
#define ABBRUCH 0
#define SIEG1 1
#define SIEG2 2
#define UNENTSCHIEDEN 3
#define COMPUTER

//Funktionen fuer db.c
void open_datenbank();
void get_highscore(char spiel);
int checkLogin(char benutzer[21], char passwort[21]); // 1 Passwort korrekt, 0 = Passwort nicht korrekt
int userExists(char benutzer[21]); // 1 = User existiert, 0 = User existiert nicht
void regist(char benutzer[21], char passwort[21]);
void print_highscore();
void close_datenbank();
void insert_highscore(char benutzer[21], char spiel[100], int gewonnen, int verloren, int unentschieden, float elo);
float get_elo(char benutzer[21], char spiel[100]);
void get_user_id(char benutzer[21]);
int get_gewonnen(char benutzer[21], char spiel[100]);
int get_verloren(char benutzer[21], char spiel[100]);
int get_unentschieden(char benutzer[21], char spiel[100]);
int get_spieler_anzahl();
void get_spieler();
int get_anzahl_spiele(char benutzer[21]);

//Funktionen fuer login.c
int chooseUsername(char* strOut, unsigned int strSize, int iText);
int choosePassword(char* strOut, unsigned int strSize, int iText);
void setPassword(char* strOut, unsigned int strSize);
void almostSecureAlg(char* strOut, unsigned int strSize);
int registrate(void);
int login(int position);

//Funktionen fuer menue.c
void getMainMenue(void);
int chooseModi(void);
int logReg(int position, int spiel);

//Funktionen fuer vier_gewinnt.c
#define WIDTH  6
#define HEIGHT 6
void print_field(void);
int next_empty_y(int ix);
int xy_pl(int player, int ix, int iy);
enum result place(int player, int ix);
enum result human_new_pos(int player);
enum result computer_new_pos(int player);
enum result play_new_pos(int player, int human);
void init_field(void);
int fourInARow(int iKi);
int next_empty_y(int ix);


//funktionen f\201r reversi

void display(char cBoard[][iSIZE]);
int valid_moves(char cBoard[][iSIZE], int iMoves[][iSIZE], char cPlayer); 
void make_move(char cBoard[][iSIZE], int iRow, int iCol, char cPlayer);  
void computer_move(char cBoard[][iSIZE], int iMoves[][iSIZE], char cPlayer);  
int best_move(char cBoard[][iSIZE], int iMoves[][iSIZE], char cPlayer);
int get_score(char cBoard[][iSIZE], char cPlayer);
int reversi(int iKi);

//bridges
int bridges(void);

//checkers
int checkers(void);

//globale Variablen:

char acBenutzernameEins[21];
char acBenutzernameZwei[21];

//statistik
void ShowAuswahl(void);
int get_anzahl_spiele(char benutzer[21]);
int get_anzahl_siege(char benutzer[21]);
int get_anzahl_verloren(char benutzer[21]);
int get_anzahl_unentschieden(char benutzer[21]);
float get_anzahl_elo(char benutzer[21]);